package dk.hewison.client.mvc;

import dk.hewison.client.AppEvent;
import dk.hewison.client.Log;


/**
 * @author John Hewison (creator)
 * @author $LastChangedBy: john.hewison $ $LastChangedDate: 2009-02-15 12:47:07 +0000 (Sun, 15 Feb 2009) $
 * @version $Revision: 364 $
 */
public interface Controller<T> extends Model<T> {

    int getId();

    String getName();

    boolean isEnabled();

    View<T> getView();

    View<?> getSubView(int id);

    View<T> createView();

    void updateActions();

    Action getAction(int actionId);

    Action[] getActions();

    Log log();

    void showPage();

    boolean leavePage();

    void eventOccurred(AppEvent event);

    Controller getSubController(int id);
}
